package com.zgis.module.bas.bean;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.zgis.module.bas.constant.CxConsts;
import lombok.*;

/**
 * 修改记录:
 * 24-09-29     zhengchaojun             首次创建
 */

/**
 * 类描述：系统级别的字段管理类
 */
@TableName("cx_fld")
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class CxFld
{
    /**
     * 主键
     */
    @TableId
    private Long id;

    /**
     * 系统
     */
    private String sys;

    /**
     * 表名
     */
    private String tabname;

    /**
     * 列名
     */
    private String colname;

    /**
     * 英文名称
     */
    private String namee;

    /**
     * 中文名称
     */
    private String namec;

    /**
     * 是否数字
     */
    private Integer isnum;

    /**
     * 显示顺序
     */
    private Integer disporder;

    /**
     * 显示类型
     */
    private Integer disptype;

    /**
     * 新建编辑
     */
    private Integer newedit;

    /**
     * 可编辑
     */
    private Integer editable;

    /**
     * 可为空
     */
    private Integer nullable;

    /**
     * 显示行数
     */
    private Integer disprows;

    /**
     * 最小值
     */
    private String minval;

    /**
     * 最大值
     */
    private String maxval;

    /**
     * 默认值
     */
    private String defval;

    /**
     * 英文分组
     */
    private String groupe;

    /**
     * 中文分组
     */
    private String groupc;

    /**
     * 是否主卡
     */
    private Integer ismcard;

    /**
     * 别名（非数据库字段）
     */
    @TableField(exist = false)
    public String alias = null;

    /**
     * 获取字段类型
     */
    public int getType()
    {
        if (isnum == 1)
        {
            return CxConsts.DATA_LONG;
        }
        else if (isnum != 0)
        {
            return CxConsts.DATA_DOUBLE;
        }
        else
        {
            switch (disptype)
            {
                case 3:
                    return CxConsts.DATA_DATE;
                case 5:
                    return CxConsts.DATA_DATETIME;
                default:
                    return CxConsts.DATA_STRING;
            }
        }
    }

    public void copy(CxFld ref)
    {
        ref.colname = this.colname;
        ref.alias = this.alias;
        ref.namec = this.namec;
        ref.disporder = this.disporder;
        ref.disptype = this.disptype;
    }
}
